Explorați peisajul securității JavaScript, învățați cum să construiți cadre de securitate robuste și implementați măsuri eficiente pentru a vă proteja aplicațiile de amenințările moderne.
Infrastructura de Securitate JavaScript: Un Ghid Complet de Implementare a unui Cadru
În lumea digitală interconectată de astăzi, JavaScript alimentează o gamă largă de aplicații, de la site-uri web simple la platforme enterprise complexe. Pe măsură ce utilizarea JavaScript crește, la fel crește și importanța unei infrastructuri de securitate robuste. Acest ghid oferă o imagine de ansamblu completă asupra modului de implementare a unui cadru de securitate în proiectele dumneavoastră JavaScript, protejându-le de diverse amenințări și vulnerabilități.
Înțelegerea Peisajului Securității JavaScript
Înainte de a aprofunda implementarea cadrului, este crucial să înțelegem riscurile comune de securitate cu care se confruntă aplicațiile JavaScript. Acestea includ:
- Cross-Site Scripting (XSS): Atacatorii injectează scripturi malițioase în site-uri web vizualizate de alți utilizatori.
- Cross-Site Request Forgery (CSRF): Atacatorii păcălesc utilizatorii să efectueze acțiuni pe care nu intenționau să le facă pe o aplicație web în care sunt autentificați.
- Injecție SQL: Atacatorii inserează cod SQL malițios în interogările bazei de date, compromițând potențial date sensibile. Deși mai frecventă pe partea de back-end, JavaScript-ul de pe partea de client poate contribui la vulnerabilități exploatabile prin date trimise serverului care nu sunt sanitizate corespunzător.
- Probleme de Autentificare și Autorizare: Mecanismele slabe de autentificare și controalele de autorizare necorespunzătoare pot permite accesul neautorizat la resurse.
- Vulnerabilități ale Dependențelor: Utilizarea bibliotecilor terțe învechite sau vulnerabile poate expune aplicația la exploituri cunoscute.
- Atacuri Denial of Service (DoS): Atacatorii suprasolicită serverul cu cereri, făcându-l indisponibil pentru utilizatorii legitimi.
- Atacuri Man-in-the-Middle (MitM): Atacatorii interceptează comunicarea dintre client și server, putând fura date sensibile.
- Încălcări ale Securității Datelor (Data Breaches): Lacune de securitate care duc la accesul și divulgarea neautorizată a datelor sensibile.
Importanța unui Cadru de Securitate
Un cadru de securitate bine definit oferă o abordare structurată pentru a aborda aceste riscuri. Ajută la asigurarea faptului că securitatea este luată în considerare în fiecare etapă a ciclului de viață al dezvoltării, de la proiectare și implementare până la testare și implementare. Un cadru de securitate robust ar trebui să includă următoarele componente cheie:
- Politici de Securitate: Ghiduri și proceduri clare pentru gestionarea datelor sensibile, autentificare, autorizare și alte aspecte legate de securitate.
- Controale de Securitate: Măsuri tehnice și instrumente pentru a preveni, detecta și răspunde la amenințările de securitate.
- Instruire în Securitate: Educarea dezvoltatorilor și a altor părți interesate despre cele mai bune practici de securitate și vulnerabilitățile potențiale.
- Audituri de Securitate Regulate: Revizuiri periodice ale posturii de securitate a aplicației dumneavoastră pentru a identifica slăbiciunile și zonele de îmbunătățire.
- Plan de Răspuns la Incidente: Un proces documentat pentru a răspunde la incidentele de securitate și a minimiza impactul acestora.
Construirea Cadrului de Securitate JavaScript: Un Ghid Pas cu Pas
Implementarea unui cadru de securitate JavaScript implică mai mulți pași cheie. Să explorăm fiecare dintre aceștia în detaliu.
1. Definirea Politicilor de Securitate
Primul pas este definirea unor politici de securitate clare și complete. Aceste politici ar trebui să contureze abordarea organizației dumneavoastră față de securitate și să ofere îndrumări despre cum să gestionați diverse sarcini legate de securitate. Domeniile cheie de abordat în politicile dumneavoastră de securitate includ:
- Gestionarea Datelor: Cum ar trebui stocate, procesate și transmise datele sensibile. Luați în considerare criptarea datelor în repaus și în tranzit, precum și mascarea și tokenizarea datelor. De exemplu, o companie multinațională de comerț electronic precum Amazon ar avea politici stricte privind gestionarea informațiilor cardurilor de credit ale clienților în diferite regiuni geografice, respectând reglementări precum PCI DSS în unele țări și GDPR în Europa.
- Autentificare și Autorizare: Cerințe pentru autentificarea utilizatorilor, gestionarea parolelor și controlul accesului. Implementați autentificarea multi-factor (MFA) acolo unde este posibil. O platformă globală de social media, de exemplu, ar putea oferi opțiuni pentru MFA folosind aplicații de autentificare sau coduri SMS.
- Validarea și Sanitizarea Datelor de Intrare: Proceduri pentru validarea și sanitizarea datelor introduse de utilizator pentru a preveni atacurile XSS și de injecție SQL.
- Gestionarea Erorilor: Cum să gestionați erorile și excepțiile într-un mod sigur, evitând divulgarea de informații sensibile.
- Gestionarea Dependențelor: Ghiduri pentru gestionarea bibliotecilor și dependențelor terțe, inclusiv actualizări regulate de securitate.
- Revizuirea Codului (Code Review): Cerințe pentru revizuirea codului pentru a identifica potențialele vulnerabilități de securitate.
- Răspuns la Incidente: Un plan pentru a răspunde la incidentele de securitate, inclusiv roluri și responsabilități.
Exemplu: Luați în considerare o politică legată de stocarea parolelor. O politică solidă ar impune utilizarea unor algoritmi de hashing puternici (de ex., bcrypt, Argon2) cu "salting" pentru a proteja parolele. De asemenea, ar specifica cerințe minime de lungime și complexitate a parolei. O companie globală precum LinkedIn, care gestionează milioane de conturi de utilizator, ar trebui să aplice o astfel de politică cu rigurozitate.
2. Implementarea Controalelor de Securitate
Odată ce ați definit politicile de securitate, trebuie să implementați controale de securitate pentru a le impune. Aceste controale pot fi implementate la diferite niveluri ale aplicației dumneavoastră, inclusiv pe partea de client, pe partea de server și în infrastructura de rețea.
Controale de Securitate pe Partea de Client
Controalele de securitate pe partea de client sunt implementate în browser și sunt concepute pentru a proteja împotriva atacurilor precum XSS și CSRF. Unele controale de securitate comune pe partea de client includ:
- Validarea Datelor de Intrare: Validați datele introduse de utilizator pe partea de client pentru a preveni trimiterea de date malițioase către server. Utilizați tehnici de validare adecvate pentru diferite tipuri de date, cum ar fi adrese de e-mail, numere de telefon și date. De exemplu, la preluarea datei de naștere a unui utilizator, asigurați-vă că se încadrează într-un interval rezonabil. Biblioteci precum Validator.js pot fi de ajutor.
- Codificarea Datelor de Ieșire: Codificați datele de ieșire pentru a preveni atacurile XSS. Utilizați tehnici de codificare adecvate pentru diferite contexte, cum ar fi codificarea HTML, codificarea URL și codificarea JavaScript. Biblioteci precum DOMPurify pot sanitiza conținutul HTML pentru a preveni XSS.
- Content Security Policy (CSP): Utilizați CSP pentru a controla resursele pe care browserul are voie să le încarce. CSP poate ajuta la prevenirea atacurilor XSS prin restricționarea surselor de scripturi, stiluri și alte resurse. Un site de știri global ar putea folosi CSP pentru a permite scripturi doar de pe propriul domeniu și de pe CDN-uri de încredere.
- Subresource Integrity (SRI): Utilizați SRI pentru a verifica integritatea resurselor terțe. SRI se asigură că browserul încarcă doar resurse care nu au fost modificate. Atunci când includeți o bibliotecă de pe un CDN, SRI verifică hash-ul fișierului pentru a-i asigura integritatea.
- Token-uri CSRF: Utilizați token-uri CSRF pentru a proteja împotriva atacurilor CSRF. Token-urile CSRF sunt valori unice, imprevizibile, care sunt incluse în cereri pentru a împiedica atacatorii să falsifice cereri în numele utilizatorilor legitimi. Biblioteci și cadre precum `useRef` din React și `csurf` din Node.js pot ajuta la implementarea protecției CSRF.
- Cookie-uri Securizate: Utilizați cookie-uri securizate pentru a proteja datele sensibile stocate în cookie-uri. Cookie-urile securizate sunt transmise doar prin HTTPS, împiedicând atacatorii să le intercepteze. Asigurați-vă că cookie-urile dumneavoastră au flag-ul `HttpOnly` setat pentru a preveni accesul JavaScript-ului de pe partea de client la acestea, atenuând atacurile XSS.
Controale de Securitate pe Partea de Server
Controalele de securitate pe partea de server sunt implementate pe server și sunt concepute pentru a proteja împotriva atacurilor precum injecția SQL, problemele de autentificare și autorizare și atacurile DoS. Unele controale de securitate comune pe partea de server includ:
- Validarea și Sanitizarea Datelor de Intrare: Validați și sanitizați datele introduse de utilizator pe partea de server pentru a preveni injecția SQL și alte atacuri. Utilizați interogări parametrizate sau prepared statements pentru a preveni injecția SQL. Biblioteci precum `express-validator` în Node.js pot ajuta la validarea datelor de intrare.
- Autentificare și Autorizare: Implementați mecanisme de autentificare puternice pentru a verifica identitățile utilizatorilor. Utilizați tehnici sigure de stocare a parolelor, cum ar fi bcrypt sau Argon2. Implementați controale de autorizare robuste pentru a restricționa accesul la resurse pe baza rolurilor și permisiunilor utilizatorilor. Utilizați JSON Web Tokens (JWT) pentru autentificare și autorizare stateless. Cadre precum Passport.js pot eficientiza procesele de autentificare și autorizare. O instituție financiară globală ar folosi autentificare multi-factor strictă și control al accesului bazat pe roluri pentru a proteja conturile clienților.
- Limitarea Ratei (Rate Limiting): Implementați limitarea ratei pentru a preveni atacurile DoS. Limitarea ratei restricționează numărul de cereri pe care un utilizator le poate face într-o anumită perioadă de timp. Biblioteci precum `express-rate-limit` în Node.js pot ajuta la implementarea limitării ratei.
- Gestionarea Erorilor: Gestionați erorile și excepțiile într-un mod sigur, evitând divulgarea de informații sensibile. Înregistrați erorile și excepțiile în jurnale (log-uri) pentru depanare, dar nu expuneți informații sensibile utilizatorilor.
- Actualizări Regulate de Securitate: Mențineți software-ul de pe partea de server la zi cu cele mai recente patch-uri de securitate. Aceasta include sistemul de operare, serverul web, serverul de baze de date și orice alte componente software.
Controale de Securitate la Nivel de Rețea
Controalele de securitate la nivel de rețea sunt implementate la nivelul rețelei și sunt concepute pentru a proteja împotriva atacurilor precum atacurile MitM și DoS. Unele controale de securitate comune la nivel de rețea includ:
- HTTPS: Utilizați HTTPS pentru a cripta comunicarea dintre client și server. HTTPS împiedică atacatorii să intercepteze date sensibile. Obțineți un certificat SSL/TLS de la o autoritate de certificare de încredere.
- Firewall-uri: Utilizați firewall-uri pentru a bloca accesul neautorizat la serverul dumneavoastră. Configurați firewall-ul pentru a permite traficul doar pe porturile necesare pentru aplicația dumneavoastră.
- Sisteme de Detecție și Prevenire a Intruziunilor (IDPS): Utilizați IDPS pentru a detecta și preveni activitatea malițioasă în rețeaua dumneavoastră. IDPS poate ajuta la identificarea și blocarea atacurilor precum injecția SQL, XSS și atacurile DoS.
- Audituri de Securitate Regulate: Efectuați audituri de securitate regulate ale infrastructurii de rețea pentru a identifica slăbiciunile și zonele de îmbunătățire.
3. Instruire și Conștientizare în Domeniul Securității
Instruirea și conștientizarea în domeniul securității sunt cruciale pentru a asigura că dezvoltatorii și alte părți interesate înțeleg cele mai bune practici de securitate și vulnerabilitățile potențiale. Oferiți instruire regulată în securitate dezvoltatorilor pe teme precum:
- Practici de Codare Securizată: Învățați dezvoltatorii cum să scrie cod sigur, rezistent la atacuri comune precum XSS și injecția SQL.
- Autentificare și Autorizare: Instruiți dezvoltatorii despre cum să implementeze mecanisme sigure de autentificare și autorizare.
- Validarea și Sanitizarea Datelor de Intrare: Educați dezvoltatorii despre importanța validării și sanitizării datelor de intrare.
- Gestionarea Erorilor: Învățați dezvoltatorii cum să gestioneze erorile și excepțiile într-un mod sigur.
- Gestionarea Dependențelor: Instruiți dezvoltatorii despre cum să gestioneze bibliotecile și dependențele terțe în mod sigur.
De asemenea, desfășurați traininguri regulate de conștientizare a securității pentru toți angajații pentru a-i educa despre amenințări comune de securitate, cum ar fi phishing-ul și atacurile de inginerie socială. Luați în considerare utilizarea de campanii simulate de phishing pentru a testa gradul de conștientizare al angajaților și a identifica zonele de îmbunătățire. O corporație globală precum Google investește masiv în instruirea în securitate pentru inginerii și angajații săi din întreaga lume.
4. Audituri de Securitate Regulate și Testare de Penetrare
Auditurile de securitate regulate și testarea de penetrare sunt esențiale pentru identificarea slăbiciunilor și vulnerabilităților în aplicația dumneavoastră. Auditurile de securitate implică o revizuire amănunțită a posturii de securitate a aplicației, inclusiv a codului, configurației și infrastructurii sale. Testarea de penetrare implică simularea atacurilor din lumea reală pentru a identifica vulnerabilitățile care ar putea fi exploatate de atacatori.
Efectuați audituri de securitate și teste de penetrare în mod regulat, cel puțin anual, sau mai frecvent dacă aplicația dumneavoastră este supusă unor modificări frecvente. Utilizați instrumente automate de scanare a securității pentru a identifica vulnerabilitățile comune. Colaborați cu hackeri etici sau firme de securitate cibernetică pentru testări de penetrare complete. De exemplu, o bancă ar putea efectua audituri de securitate trimestriale și teste de penetrare anuale pentru a respecta cerințele de reglementare.
5. Planificarea Răspunsului la Incidente
Chiar și cu cele mai bune măsuri de securitate implementate, incidentele de securitate pot apărea. Este important să aveți un plan de răspuns la incidente bine definit pentru a minimiza impactul acestora. Planul dumneavoastră de răspuns la incidente ar trebui să includă următorii pași:
- Detecție: Cum se detectează incidentele de securitate. Implementați instrumente și sisteme de monitorizare pentru a detecta activitatea suspectă.
- Analiză: Cum se analizează incidentele de securitate pentru a determina amploarea și impactul lor.
- Izolare (Containment): Cum se izolează incidentele de securitate pentru a preveni daune suplimentare.
- Eradicare: Cum se elimină cauza principală a incidentelor de securitate.
- Recuperare: Cum se recuperează după incidentele de securitate și se restabilesc operațiunile normale.
- Lecții Învățate: Cum se învață din incidentele de securitate și se îmbunătățește postura de securitate.
Testați-vă planul de răspuns la incidente în mod regulat pentru a vă asigura că este eficient. Desfășurați exerciții de tip "tabletop" pentru a simula diferite tipuri de incidente de securitate și pentru a vă exersa răspunsul. Un spital, de exemplu, trebuie să aibă un plan robust de răspuns la incidente pentru a aborda potențialele încălcări ale securității datelor care implică informații despre pacienți, respectând reglementări precum HIPAA în Statele Unite și legi similare la nivel internațional.
Exemple de Implementare a Cadrului
Să ne uităm la câteva exemple practice de implementare a măsurilor de securitate în cadrul framework-urilor JavaScript populare.
Securitatea în React
React, fiind un framework front-end, se ocupă în principal de randare și interacțiunea cu utilizatorul. Cu toate acestea, securitatea este încă o considerație critică. Iată câteva bune practici de securitate de urmat atunci când dezvoltați aplicații React:
- Prevenirea XSS: Utilizați mecanismele încorporate ale React pentru a preveni atacurile XSS. React escapează automat valorile randate în DOM, făcând dificilă injectarea de scripturi malițioase de către atacatori. Totuși, fiți atenți când utilizați `dangerouslySetInnerHTML`. Sanitizați orice HTML înainte de a-l pasa către `dangerouslySetInnerHTML` folosind o bibliotecă precum DOMPurify.
- Integrarea CSP: Configurați serverul pentru a trimite antetele corespunzătoare Content Security Policy (CSP) pentru a atenua atacurile XSS. Un CSP de bază ar putea arăta astfel: `Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com`.
- Protecția CSRF: Implementați protecția CSRF prin includerea unui token CSRF în toate cererile POST. Utilizați o bibliotecă precum `axios` cu interceptori pentru a adăuga automat token-ul CSRF la antetele cererilor.
- Gestionarea Dependențelor: Utilizați un instrument de gestionare a dependențelor precum npm sau yarn pentru a vă gestiona dependențele. Actualizați-vă regulat dependențele pentru a remedia vulnerabilitățile de securitate. Utilizați instrumente precum Snyk sau npm audit pentru a identifica și remedia vulnerabilitățile din dependențele dumneavoastră.
- Autentificare și Autorizare: Utilizați o bibliotecă de autentificare sigură precum Auth0 sau Firebase Authentication pentru a gestiona autentificarea utilizatorilor. Implementați controlul accesului bazat pe roluri (RBAC) pentru a restricționa accesul la resurse în funcție de rolurile utilizatorilor.
Exemplu: Prevenirea XSS cu `dangerouslySetInnerHTML`:
```javascript import DOMPurify from 'dompurify'; function MyComponent({ html }) { const sanitizedHTML = DOMPurify.sanitize(html); return ; } ```Securitatea în Angular
Angular, un framework cuprinzător, oferă caracteristici de securitate încorporate pentru a proteja împotriva atacurilor comune.
- Prevenirea XSS: Angular sanitizează automat HTML, CSS și URL-uri pentru a preveni atacurile XSS. Caracteristicile de securitate încorporate ale framework-ului împiedică atacatorii să injecteze scripturi malițioase. Fiți atenți când ocoliți sanitizarea încorporată a Angular folosind `DomSanitizer`. Ocoliți sanitizarea doar atunci când este absolut necesar și asigurați-vă că sanitizați datele dumneavoastră.
- Integrarea CSP: Similar cu React, configurați serverul pentru a trimite antetele CSP corespunzătoare pentru a atenua atacurile XSS.
- Protecția CSRF: Angular oferă protecție CSRF încorporată. `HttpClient` include automat un token CSRF în toate cererile POST. Activați protecția CSRF pe partea de server prin setarea cookie-ului `XSRF-TOKEN`.
- Gestionarea Dependențelor: Utilizați npm sau yarn pentru a vă gestiona dependențele. Actualizați-vă regulat dependențele pentru a remedia vulnerabilitățile de securitate. Utilizați instrumente precum Snyk sau npm audit pentru a identifica și remedia vulnerabilitățile din dependențele dumneavoastră.
- Autentificare și Autorizare: Utilizați "authentication guards" încorporate ale Angular pentru a proteja rutele. Implementați controlul accesului bazat pe roluri (RBAC) pentru a restricționa accesul la resurse în funcție de rolurile utilizatorilor. Utilizați o bibliotecă de autentificare sigură precum Auth0 sau Firebase Authentication pentru a gestiona autentificarea utilizatorilor.
Exemplu: Utilizarea HttpClient din Angular cu protecție CSRF:
```typescript import { HttpClient, HttpHeaders } from '@angular/common/http'; constructor(private http: HttpClient) {} makePostRequest(data: any) { const headers = new HttpHeaders({ 'Content-Type': 'application/json' }); return this.http.post('/api/endpoint', data, { headers }); } ```Securitatea în Node.js
Node.js, fiind un mediu de execuție pe partea de server, necesită o atenție deosebită la securitate. Iată câteva bune practici de securitate de urmat atunci când dezvoltați aplicații Node.js:
- Validarea și Sanitizarea Datelor de Intrare: Validați și sanitizați datele introduse de utilizator pe partea de server pentru a preveni injecția SQL și alte atacuri. Utilizați interogări parametrizate sau prepared statements pentru a preveni injecția SQL. Biblioteci precum `express-validator` pot ajuta la validarea datelor de intrare.
- Autentificare și Autorizare: Implementați mecanisme de autentificare puternice pentru a verifica identitățile utilizatorilor. Utilizați tehnici sigure de stocare a parolelor, cum ar fi bcrypt sau Argon2. Implementați controale de autorizare robuste pentru a restricționa accesul la resurse în funcție de rolurile și permisiunile utilizatorilor. Utilizați JSON Web Tokens (JWT) pentru autentificare și autorizare stateless. Cadre precum Passport.js pot eficientiza procesele de autentificare și autorizare.
- Limitarea Ratei (Rate Limiting): Implementați limitarea ratei pentru a preveni atacurile DoS. Biblioteci precum `express-rate-limit` pot ajuta la implementarea limitării ratei.
- Gestionarea Erorilor: Gestionați erorile și excepțiile într-un mod sigur, evitând divulgarea de informații sensibile. Înregistrați erorile și excepțiile în jurnale pentru depanare, dar nu expuneți informații sensibile utilizatorilor.
- Gestionarea Dependențelor: Utilizați npm sau yarn pentru a vă gestiona dependențele. Actualizați-vă regulat dependențele pentru a remedia vulnerabilitățile de securitate. Utilizați instrumente precum Snyk sau npm audit pentru a identifica și remedia vulnerabilitățile din dependențele dumneavoastră.
- Antete de Securitate: Utilizați antete de securitate pentru a vă proteja împotriva diverselor atacuri. Antete precum `X-Frame-Options`, `X-Content-Type-Options` și `Strict-Transport-Security` pot ajuta la atenuarea riscurilor. Biblioteci precum `helmet` pot ajuta la setarea acestor antete.
Exemplu: Utilizarea `helmet` pentru a seta antete de securitate:
```javascript const express = require('express'); const helmet = require('helmet'); const app = express(); app.use(helmet()); // ... rutele și middleware-ul dumneavoastră app.listen(3000, () => { console.log('Serverul ascultă pe portul 3000'); }); ```Instrumente și Resurse
Mai multe instrumente și resurse vă pot ajuta să implementați și să mențineți o infrastructură de securitate JavaScript puternică.
- OWASP (Open Web Application Security Project): OWASP oferă o multitudine de informații despre securitatea aplicațiilor web, inclusiv ghiduri, instrumente și resurse.
- Snyk: Snyk este un instrument care vă ajută să identificați și să remediați vulnerabilitățile din dependențele dumneavoastră.
- npm audit: npm audit este un instrument încorporat în npm care vă ajută să identificați și să remediați vulnerabilitățile din dependențele dumneavoastră.
- SonarQube: SonarQube este un instrument de analiză statică care vă poate ajuta să identificați probleme de calitate a codului și vulnerabilități de securitate.
- Burp Suite: Burp Suite este un instrument de testare a securității aplicațiilor web care vă poate ajuta să identificați vulnerabilități în aplicația dumneavoastră.
- Zap (Zed Attack Proxy): ZAP este un scanner de securitate pentru aplicații web open-source care vă poate ajuta să identificați vulnerabilități în aplicația dumneavoastră.
- DOMPurify: DOMPurify este o bibliotecă care sanitizează HTML pentru a preveni atacurile XSS.
- bcrypt/Argon2: Biblioteci pentru hashing-ul securizat al parolelor.
- Passport.js: Middleware de autentificare pentru Node.js.
Concluzie
Implementarea unei infrastructuri de securitate JavaScript robuste este esențială pentru a vă proteja aplicațiile de diverse amenințări și vulnerabilități. Urmând pașii prezentați în acest ghid, puteți construi un cadru de securitate care să răspundă nevoilor și cerințelor dumneavoastră specifice. Nu uitați să revizuiți și să actualizați regulat măsurile de securitate pentru a fi cu un pas înaintea amenințărilor emergente.
Securitatea nu este o sarcină unică, ci un proces continuu. Adoptând o mentalitate axată pe securitate și investind în instruire, instrumente și procese de securitate, puteți crea un ecosistem JavaScript mai sigur și mai rezistent.
Acest ghid oferă o imagine de ansamblu completă asupra infrastructurii de securitate JavaScript și a implementării unui cadru. Înțelegând riscurile, implementând controalele potrivite și rămânând informat despre amenințările emergente, vă puteți proteja aplicațiile și datele de atacatori.